From 7a1b30f16e0fd94697c505e620a741c22600d8f7 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Wed, 11 Jan 2017 19:12:12 +0100 Subject: [PATCH] gdk/wayland: Always get the seat's key modifiers from the GdkKeymap Elsewhere we already go through the keymap to get modifiers so we should do the same here. In fact, this was relying on xkb modifier mask values being bitwise compatible with GdkModifierType which isn't necessarily true. https://bugzilla.gnome.org/show_bug.cgi?id=770112 --- gdk/wayland/gdkdevice-wayland.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c index 45483af705..4e605bdbf2 100644 --- a/gdk/wayland/gdkdevice-wayland.c +++ b/gdk/wayland/gdkdevice-wayland.c @@ -2233,10 +2233,11 @@ keyboard_handle_modifiers (void *data, keymap = seat->keymap; direction = gdk_keymap_get_direction (keymap); xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap); - seat->key_modifiers = mods_depressed | mods_latched | mods_locked; xkb_state_update_mask (xkb_state, mods_depressed, mods_latched, mods_locked, group, 0, 0); + seat->key_modifiers = gdk_keymap_get_modifier_state (keymap); + g_signal_emit_by_name (keymap, "state-changed"); if (direction != gdk_keymap_get_direction (keymap)) g_signal_emit_by_name (keymap, "direction-changed"); -- 2.30.2